package com.aiyi.server.manager.nginx.service;

import com.aiyi.server.manager.nginx.beam.NginxServer;
import com.aiyi.server.manager.nginx.bean.nginx.NginxLocation;
import com.github.odiszapc.nginxparser.NgxConfig;

import java.util.List;

/**
 * nginx操作
 *
 * @author: 李涛
 * @version: 2019年12月14日 17:21
 */
public interface NginxService {

    /**
     * 保存或编辑规则
     *
     * @param oldLocation
     * @param rule
     * @param location
     */
    void saveRule(String oldLocation, String rule, NginxLocation location);

    /**
     * 删除规则
     *
     * @param location
     * @param rule
     */
    void delRule(String location, String rule);

    /**
     * 规则列表
     *
     * @param conf
     * @param name
     * @param rule
     * @param server
     * @return
     */
    List<NginxLocation> listRules(NgxConfig conf, String name, String rule, String server);

    /**
     * 保存监听
     *
     * @param nameAndPort
     * @param server
     */
    void saveLisner(String nameAndPort, NginxServer server);

    /**
     * 删除监听
     *
     * @param nameAndPort
     */
    void deleteLisner(String nameAndPort);

    /**
     * 列出监听
     *
     * @param read
     * @return
     */
    List<NginxServer> listLisner(NgxConfig read);
}
